package org.web.locks.databasedistributedlocks.server.domain;

import lombok.Getter;
import lombok.Setter;
import org.web.base.domain.InsertGroup;
import org.web.base.domain.UpdateGroup;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

/**
 * 删除分布式锁的DO对象, 用于接收请求参数。
 * */
@Setter
@Getter
public class DistributedReleaseLocksDO {

    /**
     * 业务标识，同时也是分布式锁表的主键，创建时，必须指定，由业务接入方提供。
     * @see org.web.locks.databasedistributedlocks.server.domain.DistributedLocksDO#distributedLocksId
     */
    @NotBlank(message = "创建时，distributedLocksId 必须指定. ", groups = {InsertGroup.class})
    @Size(max = 255,message = "distributedLocksId 长度不能超过{255}个字符. " , groups = {InsertGroup.class, UpdateGroup.class})
    private String distributedLocksId;

    /**
     * 拥有者，标记锁的拥有者，来源有两种，一种由接入方指定，另一种SDK默认实现。
     * @see org.web.locks.databasedistributedlocks.server.domain.DistributedLocksDO#lockOwner
     */
    private String lockOwner;

    /**
     * 删除锁时，是否检查锁是否过期，默认值为false，即不检查锁是否过期，直接删除锁。
     */
    private boolean hasExpiredCheckWhenDeleteCondition = false;

}
